#include <iostream>

using namespace std;

const int mod = 1e9+7;
long long dp[2][3]; // dp[i][j]表示前i列填满并且填了第i+1列j个位置的方案

int main() {
    int n;
    cin >> n;
    dp[1][0] = 1; // 一个长条竖着放
    dp[1][1] = 2; // 一个L型竖着放（可以上下翻转所以是两种）  
    dp[1][2] = 1; // 两个长条横着放
    for(int i = 2; i <= n; i++) {
        // 这一列长条竖着放 + 前一列占满
        dp[i&1][0] = (dp[i-1&1][0] + dp[i-1&1][2]) % mod; 
        // 一个L型竖着放（上下翻转*2） + 这一列被占一个再横着放一个长条
        dp[i&1][1] = (dp[i-1&1][0] * 2 + dp[i-1&1][1]) % mod; 
        // 这一列两个长条横着放 + 一个L型摆成7字形
        dp[i&1][2] = (dp[i-1&1][0] + dp[i-1&1][1]) % mod;
    }
    cout << dp[n&1][0];
    return 0;
}
